其他
代码生成器:IDEA 强大的 Live Templates
点击上方“Java之间”,选择“置顶或者星标”
你关注的就是我关心的! 来源:blog.xiaohansong.com/idea-live-templates.html 上一篇:Java编程中,有哪些好的习惯从一开始就值得坚持? 注:如果文中gif图如果无法看清,可以保存图片之后查看!
前言
Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能。刚开始觉得它只是一个简单的Code Snippet,后来发现它支持变量函数配置,可以支持很复杂的代码生成。下面我来介绍一下Live Templates的用法。
基本使用
IDEA 自带很多常用的动态模板,在 Java 代码中输入fori,回车就会出现}
自定义 Template
官方自带模板毕竟不能满足我们个人编码风格的需要,Live Templates提供了变量函数的方式供我们自定义。简单用法
新增自定义模板,首先需要填写触发单词(即 Abbreviation),描述是可选的,然后定义模板的上下文,点击define选择Java,这样在编辑 Java 的时候就会触发当前模板,定义完上下文之后,就可以填写模板了。<out>
----------
System.out.println($END$)
==========
<pfs>
----------
private final static String $varName$ = "$var$";`
==========
<privateField>
----------
/**
* $COMMENT$
*/
@Getter
@Setter
private $TYPE$ $NAME$;
==========
<main>
----------
public static void main(String[] args) {
$END$
}
==========
高级用法
如果你用过 vim 的Code Sinppet插件,你会发现模板里面是可以执行函数的,强大的 Live Templates当然也支持,而且 IDEA 能够感知代码的语义,例如说当前编辑的函数的参数。但这一点就能够让我们玩出花来。我们从易到难来研究模板函数的功能。快速声明变量
声明变量是一个常用的操作,特别是需要声明变量需要加注解,注释的时候,这些代码写起来就很枯燥。下面是我定义的模板:----------
/**
* $END$
*/
@OsgiReference
@Setter
private $TYPE$ $NAME$;
快速声明 logger
声明 logger 也是一个常用的操作,上面我们是利用了粘贴函数来快速声明变量,现在我们来利用另一个函数className(),顾名思义,它的作用就是返回当前类名。----------
/** logger */
private static final Logger LOGGER = LoggerFactory.getLogger($CLASS$.class);
最强大的 groovyScript()
如果说上面用到的函数提供的能力有限,不够灵活,那么groovyScript()提供了一切你想要的能力,它支持执行 Groovy 脚本处理输入,然后输出处理后的字符串。| code | 一段Groovy代码或者Groovy脚本代码绝对路径 |
| ... | 可选入参,这些参数会绑定到`_1, _2, _3, ..._n`, 在 Groovy 代码中使用。|
快速 bean 配置
新增一个服务都要在 Spring 中注册一个 bean,一般这个配置无非就是将指明id和class,由于我们是在 xml 中配置,所以不能利用className()函数,但是我们可以利用clipboard()函数获取到类的全引用,在 IDEA 中我们直接右键类名,点击Copy Reference就行。然后执行 groovy 脚本获取类名。----------
<bean id="$id$" class="$REF$" />
快速打印当前上下文信息
打印错误日志的时候需要打印当前上下文信息的,例如说入参,有时候入参很多的时候,写起来很痛苦,好在有模板函数methodParameters(),返回当前函数参数的列表,当然这个列表我们不能直接使用,需要结合groovyScript对它进行转化。---------------
LogUtil.$TYPE$(LOGGER, "$MSG$ " + $params$);
总结
上面我们简单介绍了常用的模板函数,其实 IDEA 还有很多其它模板函数,具体参考Creating and Editing Template Variables(https://www.jetbrains.com/help/idea/2016.3/creating-and-editing-template-variables.html)。IDEA 是一个很强大的工具,善用工具能够极大的提高工作效率,将精力投入到关键的事情上,而不是将时间浪费在编写重复代码上面。一些更高级的用法还有待大家去发掘。最后推广一波代码生成插件CodeMaker(https://github.com/x-hansong/CodeMaker),好好利用也能节省很多重复编写代码的时间。最近热文阅读:1、聊聊在阿里远程办公那点事儿2、面试必备的 “零拷贝” 问题!从头给你说!3、18个Java8日期处理的实践,太有用了!4、Spring 5.1.13 和 Spring Boot 2.2.3 发布5、Lambda 表达式有何用处?如何使用?6、如果我是面试官,我会问你 Spring 这些问题?7、MySQL事务的实现原理8、不耍流氓,有答案的Zookeeper面试题9、Java并发:分布式应用限流 Redis + Lua 实践10、Redis为什么默认16个数据库?